#!/bin/bash

# 虚拟串口状态查看脚本

echo "=== 虚拟串口状态查看 ==="
echo ""

# 检查模块是否已加载
if ! lsmod | grep -q vserial_stj; then
    echo "错误: 虚拟串口模块未加载"
    echo "请先加载模块: sudo insmod vserial_stj.ko"
    exit 1
fi

# 显示proc状态信息
if [ -f "/proc/vserial_stj/status" ]; then
    echo "模块状态信息:"
    echo "================"
    cat /proc/vserial_stj/status
    echo ""
else
    echo "警告: 无法读取状态文件 /proc/vserial_stj/status"
    echo ""
fi

# 显示设备文件
echo "设备文件:"
echo "=========="
if ls /dev/ttyV* 2>/dev/null | grep -q .; then
    ls -la /dev/ttyV*
else
    echo "未找到虚拟串口设备文件"
fi
echo ""

# 显示TCP连接状态
echo "TCP连接检查:"
echo "============="
for i in {0..7}; do
    if [ -e "/dev/ttyV$i" ]; then
        # 尝试从proc文件获取端口信息
        port=$(cat /proc/vserial_stj/status 2>/dev/null | grep "TCP地址.*:$i" | head -1 | sed 's/.*:\([0-9]*\)/\1/')
        if [ -n "$port" ]; then
            echo "检查 ttyV$i -> 端口 $port"
            if netstat -an 2>/dev/null | grep -q ":$port.*LISTEN"; then
                echo "  ✓ TCP服务器在端口 $port 监听"
            else
                echo "  ✗ TCP服务器未在端口 $port 监听"
            fi
        fi
    fi
done
echo ""

# 显示模块信息
echo "模块信息:"
echo "=========="
lsmod | grep vserial_stj
echo ""

# 显示dmesg中的相关日志
echo "最近的模块日志:"
echo "================"
dmesg | grep vserial | tail -10
echo ""

echo "=== 状态查看完成 ===" 